struct ListNode* getIntersectionNode
(struct ListNode* headA, struct ListNode* headB) {
    //俩条链表的长度可能不同 导致俩条链表之间的节点无法对应
    //如果用俩个指针分别指向俩个链表各走各的就很吃亏
    //让 p1 遍历完链表 A 之后开始遍历链表 B
    //让 p2 遍历完链表 B 之后开始遍历链表 A.这样相当于「逻辑上」两条链表连接在了一起
    struct ListNode* p1 = headA; struct ListNode* p2 = headB;
    while (p1 != p2)
    {
        if (p1 == NULL)
        {
            p1 = headB;//如果p1走完了 就让他转到B链表
        }
        else
        {
            p1 = p1->next;
        }
        if (p2 == NULL)
        {
            p2 = headA;
        }
        else
        {
            p2 = p2->next;
        }
    }
    return p2;//return p1也可以 因为只要他们相等 就是相遇。
}